<?php
    /*
     * This example demonstrates how to invoke an mixin method with transparency.
     *
     * Mixin methods are typically invoked using the mixin key and method
     * name convention.  However, to increase transparency of mixins, the
     * mixin key can be omitted from their method names.  This may be useful
     * if prototyping class structures and there needs a consistent to be a 
     * consistent interface when refactoring the internal object hierarchy.
     *
     * @author Walter Badillo
     */
     
    require dirname(__FILE__) . DIRECTORY_SEPARATOR . '_include.php';
    
    try {
        
        echo "\n";
        
        $obj = new ClassStructure_Mixin_Delegator();
        
        echo "Test: Invoke an mixin method, using the transparent format" . "\n";
        echo '---------------------------------------------------------' . "\n\n";
        
        $obj->__addMixin(new Mixin_Property(), 'property');
        
        $obj->setProperty('one', 1);
        
        echo "\n\n";
        
        //----------------------------------------------------------------------
        // Expose structure
        
        echo ClassStructure_UtilityFunctions::getObjectSignature($obj);
        
    } catch (Exception $obj_exception) {
        print_r($obj_exception);
    }
    
